home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / russell / russell.lha / examples / ffact.r < prev    next >
Text File  |  1989-12-29  |  432b  |  24 lines

  1. (* A faster version of factorial.  If you don't believe it, try 5000! *)
  2.  
  3. use Long in let
  4.     (* Compute n * (n-m) * (n-2m) * ...  *)
  5.     f == func[n, m: val Long] {
  6.         let
  7.         k == 2 * m
  8.         in
  9.         if n > m then
  10.             f[n, k] * f[n-m, k]
  11.         else
  12.             n
  13.         fi
  14.         ni
  15.      };
  16.     
  17.     ! == func[n: val Long] { f[n, 1] };
  18.     x == Long$New[];
  19. in
  20.     do
  21.     (put["Factorial of?"]; x := In[get[FS]]) >= 0  ==>  put[x!]; put "\n";
  22.     od
  23. ni ni
  24.